home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1996 #15
/
Monster Media Number 15 (Monster Media)(July 1996).ISO
/
prog_pas
/
cddk9605.zip
/
HEADERS.ZIP
/
KEYBOARD.INT
< prev
next >
Wrap
Text File
|
1996-05-17
|
9KB
|
403 lines
{ ───────────────────────────────────────────────────────────────────────── }
{ Name : KEYBOARD.PAS }
{ Description : Keyboard routines }
{ ───────────────────────────────────────────────────────────────────────── }
UNIT Keyboard;
{$B-} { . . . . . . . . . . . . . . . . . . . . Shortcut boolean evaluation }
{$F+} { . . . . . . . . . . . . . . . . . . . . Force far calls for safety }
{$I-} { . . . . . . . . . . . . . . . . . . . Disable input/output checking }
{$O+} { . . . . . . . . . . . . . . . . . . Allow this unit to be overlayed }
{$Q-} { . . . . . . . . . . . . . . Do not generate overflow-checking code }
{$R-} { . . . . . . . . . . . . . . . . Do not generate range-checking code }
{$S-} { . . . . . . . . . . . . . . . . Do not generate stack-checking code }
{$X+} { . . . . . . . . . . . Extended syntax for pChars and function calls }
INTERFACE
CONST
ScanCode : Word = 0; { The scan code of the last keystroke is assigned to }
{ this variable by the ReadKey procedure. }
{ Shift Flags -- use these constants with the GetShiftFlags function. }
sf_RightShift = $01; { -------1 }
sf_LeftShift = $02; { ------1- }
sf_Control = $04; { -----1-- }
sf_Alt = $08; { ----1--- }
sf_ScrollLock = $10; { ---1---- }
sf_NumLock = $20; { --1----- }
sf_CapsLock = $40; { -1------ }
sf_Insert = $40; { 1------- }
CONST
{ Scan-Code Constants
KB_Alt_? = Scan code of the ALT key plus the letter.
KB_Ctl_? = Scan code of the CONTROL key plus the letter.
KB_Cap_? = Scan code of the capital letter.
KB_Low_? = Scan code of the lower-case letter. }
{ Letters }
KB_Alt_A = $1E00;
KB_Ctl_A = $1E01;
KB_Cap_A = $1E41;
KB_Low_A = $1E61;
KB_Alt_B = $3000;
KB_Ctl_B = $3002;
KB_Cap_B = $3042;
KB_Low_B = $3062;
KB_Alt_C = $2E00;
KB_Ctl_C = $2E03;
KB_Cap_C = $2E43;
KB_Low_C = $2E63;
KB_Alt_D = $2000;
KB_Ctl_D = $2004;
KB_Cap_D = $2044;
KB_Low_D = $2064;
KB_Alt_E = $1200;
KB_Ctl_E = $1205;
KB_Cap_E = $1245;
KB_Low_E = $1265;
KB_Alt_F = $2100;
KB_Ctl_F = $2106;
KB_Cap_F = $2146;
KB_Low_F = $2166;
KB_Alt_G = $2200;
KB_Ctl_G = $2207;
KB_Cap_G = $2247;
KB_Low_G = $2267;
KB_Alt_H = $2300;
KB_Ctl_H = $2308;
KB_Cap_H = $2348;
KB_Low_H = $2368;
KB_Alt_I = $1700;
KB_Ctl_I = $1709;
KB_Cap_I = $1749;
KB_Low_I = $1769;
KB_Alt_J = $2400;
KB_Ctl_J = $240A;
KB_Cap_J = $244A;
KB_Low_J = $246A;
KB_Alt_K = $2500;
KB_Ctl_K = $250B;
KB_Cap_K = $254B;
KB_Low_K = $256B;
KB_Alt_L = $2600;
KB_Ctl_L = $260C;
KB_Cap_L = $264C;
KB_Low_L = $266C;
KB_Alt_M = $3200;
KB_Ctl_M = $320D;
KB_Cap_M = $324D;
KB_Low_M = $326D;
KB_Alt_N = $3100;
KB_Ctl_N = $310E;
KB_Cap_N = $314E;
KB_Low_N = $316E;
KB_Alt_O = $1800;
KB_Ctl_O = $180F;
KB_Cap_O = $184F;
KB_Low_O = $186F;
KB_Alt_P = $1900;
KB_Ctl_P = $1910;
KB_Cap_P = $1950;
KB_Low_P = $1970;
KB_Alt_Q = $1000;
KB_Ctl_Q = $1011;
KB_Cap_Q = $1051;
KB_Low_Q = $1071;
KB_Alt_R = $1300;
KB_Ctl_R = $1312;
KB_Cap_R = $1352;
KB_Low_R = $1372;
KB_Alt_S = $1F00;
KB_Ctl_S = $1F13;
KB_Cap_S = $1F53;
KB_Low_S = $1F73;
KB_Alt_T = $1400;
KB_Ctl_T = $1414;
KB_Cap_T = $1454;
KB_Low_T = $1474;
KB_Alt_U = $1600;
KB_Ctl_U = $1615;
KB_Cap_U = $1655;
KB_Low_U = $1675;
KB_Alt_V = $2F00;
KB_Ctl_V = $2F16;
KB_Cap_V = $2F56;
KB_Low_V = $2F76;
KB_Alt_W = $1100;
KB_Ctl_W = $1117;
KB_Cap_W = $1157;
KB_Low_W = $1177;
KB_Alt_X = $2D00;
KB_Ctl_X = $2D18;
KB_Cap_X = $2D58;
KB_Low_X = $2D78;
KB_Alt_Y = $1500;
KB_Ctl_Y = $1519;
KB_Cap_Y = $1559;
KB_Low_Y = $1579;
KB_Alt_Z = $2C00;
KB_Ctl_Z = $2C1A;
KB_Cap_Z = $2C5A;
KB_Low_Z = $2C7A;
{ Digits }
KB_Num_1 = $0231;
KB_Pad_1 = $4F31;
KB_Alt_1 = $7800;
KB_Num_2 = $0332;
KB_Pad_2 = $5032;
KB_Alt_2 = $7900;
KB_Num_3 = $0433;
KB_Pad_3 = $5133;
KB_Alt_3 = $7A00;
KB_Num_4 = $0534;
KB_Pad_4 = $4B34;
KB_Alt_4 = $7B00;
KB_Num_5 = $0635;
KB_Pad_5 = $4C35;
KB_Alt_5 = $7C00;
KB_Num_6 = $0736;
KB_Pad_6 = $4D36;
KB_Alt_6 = $7D00;
KB_Num_7 = $0837;
KB_Pad_7 = $4737;
KB_Alt_7 = $7E00;
KB_Num_8 = $0938;
KB_Pad_8 = $4838;
KB_Alt_8 = $7F00;
KB_Num_9 = $0A39;
KB_Pad_9 = $4939;
KB_Alt_9 = $8000;
KB_Num_0 = $0B30;
KB_Pad_0 = $5230;
KB_Alt_0 = $8100;
{ Function Keys }
KB_Fun_F1 = $3B00;
KB_Shf_F1 = $5400;
KB_Ctl_F1 = $5E00;
KB_Alt_F1 = $6800;
KB_Fun_F2 = $3C00;
KB_Shf_F2 = $5500;
KB_Ctl_F2 = $5F00;
KB_Alt_F2 = $6900;
KB_Fun_F3 = $3D00;
KB_Shf_F3 = $5600;
KB_Ctl_F3 = $6000;
KB_Alt_F3 = $6A00;
KB_Fun_F4 = $3E00;
KB_Shf_F4 = $5700;
KB_Ctl_F4 = $6100;
KB_Alt_F4 = $6B00;
KB_Fun_F5 = $3F00;
KB_Shf_F5 = $5800;
KB_Ctl_F5 = $6200;
KB_Alt_F5 = $6C00;
KB_Fun_F6 = $4000;
KB_Shf_F6 = $5900;
KB_Ctl_F6 = $6300;
KB_Alt_F6 = $6D00;
KB_Fun_F7 = $4100;
KB_Shf_F7 = $5A00;
KB_Ctl_F7 = $6400;
KB_Alt_F7 = $6E00;
KB_Fun_F8 = $4200;
KB_Shf_F8 = $5B00;
KB_Ctl_F8 = $6500;
KB_Alt_F8 = $6F00;
KB_Fun_F9 = $4300;
KB_Shf_F9 = $5C00;
KB_Ctl_F9 = $6600;
KB_Alt_F9 = $7000;
KB_Fun_F0 = $4400;
KB_Shf_F0 = $5D00;
KB_Ctl_F0 = $6700;
KB_Alt_F0 = $7100;
{ Brackets }
KB_Open_Brace = $1A7B;
KB_Close_Brace = $1B7D;
KB_Open_Bracket = $1A5B;
KB_Ctl_Open_Bracket = $1A1B;
KB_Close_Bracket = $1B5D;
KB_Ctl_Close_Bracket = $1B1D;
KB_Open_Parenthesis = $0A28;
KB_Close_Parenthesis = $0B29;
{ Math }
KB_Equal = $0D3D;
KB_Alt_Equal = $8300;
KB_Less_Than = $333C;
KB_Greater_Than = $343E;
KB_Minus = $352D;
KB_GrayMinus = $4A2D;
KB_Ctl_Minus = $0C1F;
KB_Alt_Minus = $8200;
KB_ShfGrayMinus = $4A2D;
KB_Plus = $1A2B;
KB_GrayPlus = $4E2B;
KB_WhitePlus = $0D2B;
KB_ShfGrayPlus = $4E2B;
KB_Slash = $352F;
KB_BackSlash = $2B5C;
KB_Ctl_BackSlash = $2B1C;
{ Punctuation }
KB_Ampersand = $0826;
KB_Apostrophe = $2827;
KB_At = $0340;
KB_Cater = $075E;
KB_Colon = $273A;
KB_Comma = $332C;
KB_Dollar = $0524;
KB_Exclamation = $0221;
KB_Grave = $2960;
KB_GrayAsterisk = $372A;
KB_NumberSign = $0423;
KB_Percent = $0625;
KB_Period = $342E;
KB_ShfPeriod = $532E;
KB_Space = $3920;
KB_QuestionMark = $353F;
KB_Quote = $2822;
KB_Semicolon = $273B;
KB_Tilde = $297E;
KB_UnitSeparator = $0C5F;
KB_Vertical = $2B7C;
KB_WhiteAsterisk = $1A2A;
{ Cursor Positioning }
KB_Up = $4800;
KB_Down = $5000;
KB_Left = $4B00;
KB_Ctl_Left = $7300;
KB_Right = $4D00;
KB_Ctl_Right = $7400;
KB_Home = $4700;
KB_Ctl_Home = $7700;
KB_End = $4F00;
KB_Ctl_End = $7500;
KB_PgUp = $4900;
KB_Ctl_PgUp = $8400;
KB_PgDown = $5100;
KB_Ctl_PgDown = $7600;
{ Misc. Keys }
KB_BackSpace = $0E08;
KB_Ctl_Backspace = $0E7F;
KB_Del = $5300;
KB_Esc = $011B;
KB_Enter = $1C0D;
KB_Ctl_Enter = $1C0A;
KB_Ins = $5200;
KB_Tab = $0F09;
KB_Shf_Tab = $0F00;
FUNCTION GetShiftFlags:Byte;
{
PURPOSE : Returns the status of the control keys on the keyboard.
NOTES : 76543210
│││││││└ Right shift
││││││└─ Left shift
│││││└── Control
││││└─── Alt
│││└──── Scroll lock
││└───── Num lock
│└────── Caps lock
└─────── Insert
SEE ALSO : KeyPressed, ReadKey
}
FUNCTION KeyPressed:Boolean;
{
PURPOSE : Returns TRUE if a character is waiting in the keyboard buffer.
SEE ALSO : ReadKey
}
PROCEDURE ReadKey(VAR c:Char);
{
PURPOSE : Reads a character from the keyboard.
NOTES : Stores the scan code in ScanCode.
SEE ALSO : KeyPressed
}